package com.vhall.component.entity.inav.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.vhall.component.entity.room.vo.RoomsEntityGuoXinVO;
import com.vhall.component.entity.subject.enums.StatusEnum;
import com.vhall.component.framework.common.annotation.ParamName;
import com.vhall.component.plugin.common.constant.RoomConstant;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * @author rui.zhou
 * @date 2021/4/23 16:23
 */
@Data
public class InavRoomRespVO extends RoomsEntityGuoXinVO implements Serializable {

    @JsonProperty("il_id")
    private Integer ilId;

    @JsonProperty("room_id")
    private String roomId;

    @JsonProperty("page_channel_id")
    private Integer pageChannelId;

    @JsonProperty("page_channel_name")
    private String pageChannelName;

    private String subject;

    @JsonProperty("account_id")
    private Long accountId;

    @JsonProperty("inav_id")
    private String inavId;

    @JsonProperty("channel_id")
    private String channelId;

    @JsonProperty("nify_channel")
    private String nifyChannel;

    @JsonProperty("record_id")
    private String recordId;

    @JsonProperty("start_time")
    private LocalDateTime startTime;

    private String introduction;

    private Integer category = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("cover_image")
    private String coverImage;
    /**
     * 曝光海报
     */
    @ParamName("poster_url")
    @JsonProperty("poster_url")
    private String posterUrl;

    private String topics;

    private Integer layout = RoomConstant.DEFAULT_ZERO;

    private Integer status = RoomConstant.DEFAULT_ZERO;
    /**
     * 真实状态
     */
    @JsonProperty("actual_status")
    private Integer actualStatus = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("is_delete")
    private Integer isDelete = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("message_approval")
    private Integer messageApproval;

    @JsonProperty("created_at")
    private LocalDateTime createdAt;

    @JsonProperty("updated_at")
    private LocalDateTime updatedAt;

    @JsonProperty("app_id")
    private String appId;

    @JsonProperty("live_type")
    private Integer liveType = RoomConstant.DEFAULT_ZERO;

    private Integer like = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("warm_type")
    private Integer warmType = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("warm_vod_id")
    private String warmVodId;

    private Integer mode = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("is_open_document")
    private Integer isOpenDocument = RoomConstant.DEFAULT_ZERO;

    /**
     * 0:登录 1:报名 2:默认 3:白名单
     */
    @JsonProperty("limit_type")
    private Integer limitType = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("begin_time_stamp")
    private Long beginTimeStamp;

    @JsonProperty("deleted_at")
    private String deletedAt;

    //从这后面的文档 没有 之间展示
    @JsonProperty("teacher_name")
    private String teacherName;

    @JsonProperty("begin_live_time")
    private LocalDateTime beginLiveTime;

    @JsonProperty("end_live_time")
    private LocalDateTime endLiveTime;

    @JsonProperty("live_mode")
    private Integer liveMode = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("message_total")
    private Integer messageTotal = RoomConstant.DEFAULT_ZERO;

    private String extend;

    private Long phone;

    @JsonProperty("form_id")
    private String formId;

    /**
     * 账号类型
     * 1代表主持人 2代表观众  3 代表游客
     */
    @JsonProperty("accs_type")
    private Integer accsType = RoomConstant.DEFAULT_ZERO;

    @JsonProperty("is_visitor")
    private Integer isVisitor = RoomConstant.DEFAULT_ZERO;

    private String name;

    private String desc;

    private String image;

    @JsonProperty("view_url")
    private String viewUrl;

    @JsonProperty("watch_url")
    private String watchUrl;

    @JsonProperty("watch_url_app")
    private String watchUrlApp;

    @JsonProperty("status_str")
    private String statusStr;

    @JsonProperty("live_room_type_str")
    private String liveRoomTypeStr;

    @JsonProperty("begin_time")
    private LocalDateTime beginTime;

    @JsonProperty("warm_info")
    private Map warmInfo;

    /**
     * 1：报过名或者在白名单中，
     * 0：没有报过名或者不在白名单中
     */
    private Integer enroll;
    /**
     * 直播限频
     */
    @JsonProperty("gift_frequency")
    private Integer giftFrequency;

    /**
     * 直播横竖屏 1横 2竖
     */
    @JsonProperty("video_type")
    private Integer videoType;

    /**
     * 房间审核状态
     */
    @JsonProperty("audit_status")
    private Integer auditStatus;

    /**
     * 评论标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("comment_status")
    @ParamName("comment_status")
    private Integer commentStatus;

    /**
     * 预约标记
     * 0 关
     * 1 开
     * <p>
     * {@link StatusEnum}
     */
    @JsonProperty("reservation_status")
    @ParamName("reservation_status")
    private Integer reservationStatus;

    /**
     * 分享简介
     */
    @JsonProperty(value = "share_introduction")
    @ParamName(value = "share_introduction")
    private String shareIntroduction;


    /**
     * 免责声明
     */
    @JsonProperty(value = "disclaimer")
    @ParamName(value = "disclaimer")
    private String disclaimer;

    /**
     * 是否订阅该栏目
     * true 已经订阅，false,没有订阅
     */
    @JsonProperty(value = "column_attention_flag")
    @ParamName(value = "column_attention_flag")
    private Boolean columnAttentionFlag;
    /**
     * 显示开户
     * 0:不显示 开户按钮
     * 1:显示 开户按钮
     */
    @JsonProperty(value = "show_open_account")
    @ParamName(value = "show_open_account")
    private Integer showOpenAccount = 0;
    /**
     * 是否开启章节打点
     * 0:不显示
     * 1:显示
     */
    @JsonProperty(value = "point_status")
    @ParamName(value = "point_status")
    private Integer pointStatus = 0;
}
